/*
  箭头函数：
  1. 语法： const 函数名 = () => { }

  2. 特性：
     1. 形式参数只有一个时候，可以省略小括号
     2. 函数体是有一句话的时候，可以省略大括号，
        如果省略了大括号，此时箭头函数自带return的功能，
        无需自己在显示的写return了
     3. 箭头函数内部的this指向父级函数中的this（往上找）

  3.注意：
     不能通过new关键字调用，箭头函数不能视为构造函数
     
  4. 应用场景：
    1. 多用在回调函数中
    2. 改变this指向的时候
*/
// 普通函数
// const fn = () => { }
// 1. 箭头函数

const fn = () => { }

// fn()


// 2. 
// const sayHi = function (name) {
//   return `hi~${name}`
// }
const sayHi = name => `hi~${name}`
// console.log(sayHi('技术痞瑞'))

// 3. 注意：箭头函数不能new
new fn()

// 4. 箭头函数，this指向、应用场景
const obj = {
  name: '技术痞瑞',
  age: 18,
  fn: function () {
    // console.log('fn', this)
    setTimeout(() => {
      // console.log('回调', this) // Window
      this.age++// ? 
      console.log(obj)
    }, 1000)
  }
}
// obj.fn()

// 单击文档， 延迟1秒，让obj.age ++
document.onclick = function () {
  obj.fn()
}

